package com.gitee.lougnib.simplekits.common_faces.template;

import java.io.File;
import java.io.OutputStream;
import java.util.Map;

public interface TemplateService {

    /**
     * 合并模板。
     *
     * @param templateName 模板名
     * @param context 上下文内容
     * @return 合并后的字符串
     */
    String merge(String templateName, Map<String, Object> context);

    /**
     * 合并模板，并输出到文件。输出的字符集是 UTF-8。
     *
     * @param templateName 模板名
     * @param context 上下文内容
     * @param filePath 输出路径
     */
    void merge(String templateName, Map<String, Object> context, String filePath);

    /**
     * 合并模板，并输出到文件。输出的字符集是 UTF-8。
     *
     * @param templateName 模板名
     * @param context 上下文内容
     * @param encoding 输出的字符集
     * @param filePath 输出路径
     */
    void merge(String templateName, Map<String, Object> context, String filePath, String encoding);

    /**
     * 合并模板，并输出到文件。输出的字符集是 UTF-8。
     *
     * @param templateName 模板名
     * @param context 上下文内容
     * @param outputFile 输出路径
     */
    void merge(String templateName, Map<String, Object> context, File outputFile);

    /**
     * 合并模板，并输出到文件。输出的字符集是 UTF-8。
     *
     * @param templateName 模板名
     * @param context 上下文内容
     * @param outputFile 输出路径
     * @param encoding 输出的字符集
     */
    void merge(String templateName, Map<String, Object> context, File outputFile, String encoding);

    /**
     * 合并模板，并输出到文件。输出的字符集是 UTF-8。
     *
     * @param templateName 模板名
     * @param context 上下文内容
     * @param out 输出流
     * @param encoding 输出的字符集
     */
    void merge(String templateName, Map<String, Object> context, OutputStream out, String encoding);
}
